home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-13
/
me_cd22.zip
/
DOC.ZIP
/
CHANGES.TXT
next >
Wrap
Text File
|
1992-04-27
|
11KB
|
204 lines
-*-text-*-
Branched ME to ME2
DONE:
- The init file is me2.mco. ME2 is the env var.
- Added a maybe arg to (current-window). If arg, the current window is
set to n.
- change register to bag
- (create-bag ?n), (free-bag bag-id ...)
- added (create-buffer), (free-buffer), (nth-buffer)
- add a maybe arg to (current-buffer). If arg, the current buffer is
set to n
- all buffer commands take buffer ids.
- removed (kill-buffer)
- removed (use-existing-buffer).
- (read-file-hook) called after a file is read in.
- added (goto-mark mark-id), (set-mark [mark-id]).
- changed set mark routine that is bound to key to set-the-mark.
- have shell-command return a error code.
- removed query-replace and re-query-replace.
- added search-replace and re-search-replace.
- moved re-search-forward, re-search-reverse, search-forward, and
search-reverse to Mutt.
- cache some windows at startup to (hopefully) reduce malloc thrashing.
Should also think about caching buffers and bags.
- Changed the way single line edits updates are done to fix a bug.
- Moved (goto-line n) to Mutt. Added functionality: if n < 0, goes to
nth line from end of buffer.
- remove CR not giving a new line if a blank line is below.
- do more error checking in edinit().
- Removed (buffer-var) and (buffer-string)
- Added (create-buffer-var type name ...) and (buffer-var name [val]).
- Replaced (filter-region) with (OS-filter).
- Added (create-mark [n]) and (free-mark mark-id [n]). Now have a
unlimited number of marks per buffer.
- Changed (compare-dot-and-mark) to (compare-marks [mark1 mark2]).
- Added args to (region-stats). Is now (region-stats blob [mark1 mark2]).
Defaults to (DOT,THE-MARK).
- Removed (next-buffer). Rewrote in mutt (hidebuf.mut). Ignores
Hidden2 buffers.
- Modified (nth-buffer) to return the count of the current buffer if no
args.
- Modified (load) to take a search path ala Unix ksh (using the ME2 env
var). Current directory no longer automatically searched. Hopefully,
this will add support for lots of ME2 users using same .mco files and
minor extensions.
- Added a tickle bit in the buffer flags for the the modified bit:
BFMode (0x10). Its write-only, it can't be set, is always 0. If
tickle it, all the modelines for the buffer are updated. Use like so:
(buffer-flags -1 BFMode). Use it when you need to force modeline-hook
to be called for a buffer.
- (buffer-flags ...) now properly reacts to the all the flags. Used to
not do much if the modified bit was changed. Now will update
modelines if needbe. Note that modelines ONLY updated if the state of
the bit changes. Set the modified bit with (buffer-modified) and
(buffer-flags) have the same results.
- UNDO prototyped and working (1/91).
- Dot is just mark 0.
- Removed case routines because they don't undo.
Routines removed: (case-region-lower), (case-region-upper),
(case-word-capitalize), (case-word-lower), (case-word-upper)
Replaced with:
(case-text op bag-id op) where op is one of upper case, lower case
or capitalize. Case match with another string or bag (or query
replace) would be nice.
See case.mut for the new user routines.
- Added garbage collection for buffers, bags and marks (6/91). This
will be intergrated into Mutt2 when that gets done. Added immortal
bits to bags and buffers. Changed (create-bag) to (create-bag
[immortal]). This is a limited gc, see other doc.
- Added functionality to (append-to-bag). Can now append arbitrary
region, characters or text to bag. 6/91
- Added arg to (visit-file). If arg flag, use the current window to
display the buffer. Suggestion from David J Bartrum
<djb%gmsws.co.uk@hplb.hpl.hp.com>. 6/91
- Added a "general" interrupt handler.
- Added a SIGWINCH signal handler so ME2 can detect and react window
size changes.
- Moved garbage collection to process_hooks() because so many pgms are
run as hooks. Hopfully, this speed things up. Relys on programmers
being good most of the time.
- Prototyped a very rudimentry interprocess communication scheme.
Tested with a clock (another process) in the modeline (ticking every
second). 7/91
Can run makes and process the results as they happen.
(Unix only): way to talk to a external process via signals and files
(maybe pipes). This would allow things like concurrent compiles and
viewing the output as it happens and editing would not be
interrupted. Also would need a hook that is called when ex-proc
sends something back to ME. I could also use this to implement
"tell me when I have mail", system load and current time on the
modeline.
Provides a mechinism that allows a process ME knows nothing about to
send ME messages that ME passes on to to a hook.
- Modified the buffer var stuff to use the object manager (also used in
MM). This added lists as a buffer var type. 9/91
- Reworked the way I maintain marks (mark.c). Removed multiple
allocatation of marks. Changed (create-mark) and (free-mark) to
reflect these changes. 9/91
- (OS-filter) is a bool. Doesn't abort if the filter fails. User
request. 9/91
- Added a sleazy hack to (load). If arg is 42 and the block already
exists, it is not loaded again. This makes (require) work quiet and
avoids loading things multiple times. 9/91
- (bag-to-string bag-id) : returns bag contents as a string. 9/91
- Added (swap-marks [mark-id [mark-id]]) 9/91
- Modified (window-height) so it can resize a window. 10/91
- Removed (enlarge-window) and (shrink-window). Rewrote them in Mutt.
10/91
- Removed (copy-rectangle) and moved the functionality to
(append-to-bag). 10/91
- Changed the spelling of (isspace) to (is-space). 10/91
- Renamed delete-window to free-window 10/91
- Removed the buffer id from (clear-buffer). I always seem to clear the
current buffer (its easy) and removes a thorn from undo. 10/91
- Added boolean arg to (update). If false, only sync window and current
buffer dots. Need this so I can have a window track a buffer while
a program is running. 10/91
- Made file-to-bag and bag-to-file bools (instead of void). In case you
want to do something if an error occurs instead of die. 11/91
- Changed all keywords with "kill" in them to "cut" or "delete". I'd
rather not have programs that kill things - bad karma. 11/91
- Added pgm-exists. I want/need this to implement maybe hooks (hooks
that are only called if the hook exists). 12/91
- Added buffer bit to mark "interactive" buffers and two "soft" hooks
(hooks in Mutt code: iread-file and icreate-buffer) that are called
if the buffer is marked interactive. I do too much stuff (markring,
mode setting, etc) for buffers that don't need it. Could also use the
mortal or nocare bits.
TODO
? turn off signals when fork shell or pause? What if comserver sends
stuff while paused? select on return? events_pending()
- ReDO
- UNDO tuning.
- (create-file-name): Generate a unique file name ala (OS-filter).
Used when need a filename in stuff that uses (shell-command). Gotta
make sure that multiple calls generate different names.
- (create-buffer-name file-name) Since this is OS specific, easier to
do in C, etc.
? (forward-character n) (forward-word n)
Are these worth it? Don't seem to be from the programs I've written.
? (delete-text n) Del n characters from dot. If <0, delete backwards.
Is this worth it? The cheap hack in delete_characters() seems to be
good enough for the programs I've written.
- (region-to-mini) so I can yank a region to the command line and edit
it (like grabing a compile line from the file). Could also do this
with command line programming.
? Remove HELP and add help-hook with args to do help stuff.
- When word wrap is on and you are banging on a white space key, the
line is wrapped and you get an extra ws that you don't want. To fix:
only wrap on non-ws?
- make "space bar nukes msg line" configurable (via a sysvar?).
- Need better ways to control name space pollution.
Maybe something like (extern package block-name block-name ...). Then,
to resolve a possible extern reference, search only those blocks.
- Need a way to point local/global key bindings at the routine level.
ie if a bunch of keys are bound to (next-buffer), I want to be able to
have those keys invoke (new-next-buffer) for this buffer. I don't
what to have to know what the keys are or remember them to undo this
redirection. Could do this by having buffer local routines. It is
eash to do this globally by just defuning a new routine called
(next-buffer). All the keys will bind to it. Warning: If it is in a
block of the same name, keys will get gc'ed.
- Make overstrike a buffer local thing by having a flag in b_flags and
set the global in use_buffer().
- Bring out thisflag and lastflag so Mutt can do stuff like chained
kills. Also, kbd macros don't use the flags right.
- change all op that act between mark and dot to act between 2 marks.
eg (erase-rectangle) -> (erase-rectangle mark1 mark2)
? (current-time) returns the time. What format? ascii, struct, ...?
? remove (compare-marks) cause its not used much.
? (copy-text-to-bag bag-id n) copy n characters from dot to bag.
? Remove kill buffer stuff from stuff like (delete-character).
? Remove insert-file. Can get the functionality with
(file-to-bag)(insert-bag).
- muttize bind routines, remove interactive ones.
- Better error recovery in resize_display().
- Have resize_display() not malloc() if the display size is smaller than
current. This helps core dumps on UNIX. Also, don't reread termcap?
? (copy-to-bag) since its used so much.
? remove all stuffing of killbuffer as kill (line.c, killbuf.c).
Instead, copy the data to a bag, then erase it. Con: maybe slower
(2 passes), if close to the mem limit, might have more problems.
? (clear-mark mark-id ...)(clear-mark) clears all marks?
? inverse video an area between 2 marks
? (mark-exists mark-id)
? use fast string search - strstr().
? windows that are narrower and smaller that the screen that can be
placed anywhere on the screen. ie disjoint windows - would also be
handi for windowing systems. Also, the popup menu packages could be
spiffed up.
- Ability to command complete arbitrary lists.
? (file-read) reads the file. You have to check. No asking.
Can get this with (clear-buffer -1)(read-file foo)
- Try to remove ABORT as much as possible.
? Have 2 key maps - one lower to upper and one straight through. Then
can use a pointer to it in buffer for case folding.
- Support for multiple screens. A screen is the thing that holds
windows. Each screen has its own width, height, etc. With this I
should be able to implement work spaces, add enough hooks for X and
maybe stacked windows.
- Workspaces: Instead of mearly hiding buffers, have workspaces. These
are seprate contexts. Might be better done as running another ME2.